package com.training1.core.common.enums.impl;

import java.util.ArrayList;
import java.util.List;

import org.springframework.stereotype.Service;

import com.training1.core.common.enums.DropDownDto;
import com.training1.core.common.enums.EnumSupport;
import com.training1.core.common.enums.IEnum;
import com.training1.core.common.enums.IEnumList;
import com.training1.core.common.global.Global;
import com.training1.core.common.utils.StringUtils;

@Service
public class EnumList implements IEnumList{

	public enum Gender implements IEnum{
		//男
		MALE("男",1),
		//女
		FEMALE("女",2);

		/** 值 */
		private String label;

		/** 键 */
		private Integer code;
		
		private Gender(String label, Integer code){
			this.label = label;
			this.code = code;
		}
		
		public static String getEnumLabel(Integer code) {
			for (Gender c : Gender.values()) {
				if (code == c.getCode()) {
					return c.label;
				}
			}
			return null;
		}

		/**
		 * 根据值取得第一个匹配的键
		 * 
		 * @param label
		 *            String
		 * @return String
		 */
		public static Integer getEnumCode(String label) {
			for (Gender c : Gender.values()) {
				if (StringUtils.equals(c.getLabel(), label)) {
					return c.code;
				}
			}
			return null;
		}

		/**
		 * 取得下拉框列表
		 * 
		 * @return List
		 */
		public static List<DropDownDto> getList() {
			List<DropDownDto> resultList = new ArrayList<DropDownDto>();
			for (Gender c : Gender.values()) {
				DropDownDto dto = new DropDownDto();
				dto.setId(c.getCode());
				dto.setName(c.getLabel());
				resultList.add(dto);
			}
			return resultList;
		}

		/**
		 * get
		 * 
		 * @return String
		 */
		public String getLabel() {
			return label;
		}

		/**
		 * set
		 * 
		 * @return String
		 */
		public Integer getCode() {
			return code;
		}

		/**
		 * String转换，中间加横杠
		 * 
		 * @return String
		 */
		@Override
		public String toString() {
			return this.label;
		}

		/**
		 * 转换成value
		 * 
		 * @return String
		 */
		public String toValueString() {
			return String.valueOf(this.code);
		}

		/**
		 * 转换成label
		 * 
		 * @return String
		 */
		public String toLabelString() {
			return String.valueOf(this.label);
		}

		@Override
		public String getEnumName() {
			return this.getClass().getName();
		}
		
	}
	
	public enum IsValid implements IEnum{
		//有效
		VALID("是",1),
		//无效
		VOID("否",0);

		/** 值 */
		private String label;

		/** 键 */
		private Integer code;
		
		private IsValid(String label, Integer code){
			this.label = label;
			this.code = code;
		}
		
		public static String getEnumLabel(Integer code) {
			for (IsValid c : IsValid.values()) {
				if (code == c.getCode()) {
					return c.label;
				}
			}
			return null;
		}

		/**
		 * 根据值取得第一个匹配的键
		 * 
		 * @param label
		 *            String
		 * @return String
		 */
		public static Integer getEnumCode(String label) {
			for (IsValid c : IsValid.values()) {
				if (StringUtils.equals(c.getLabel(), label)) {
					return c.code;
				}
			}
			return null;
		}

		/**
		 * 取得下拉框列表
		 * 
		 * @return List
		 */
		public static List<DropDownDto> getList() {
			List<DropDownDto> resultList = new ArrayList<DropDownDto>();
			for (IsValid c : IsValid.values()) {
				DropDownDto dto = new DropDownDto();
				dto.setId(c.getCode());
				dto.setName(c.getLabel());
				resultList.add(dto);
			}
			return resultList;
		}

		/**
		 * get
		 * 
		 * @return String
		 */
		public String getLabel() {
			return label;
		}

		/**
		 * set
		 * 
		 * @return String
		 */
		public Integer getCode() {
			return code;
		}

		/**
		 * String转换，中间加横杠
		 * 
		 * @return String
		 */
		@Override
		public String toString() {
			return this.label;
		}

		/**
		 * 转换成value
		 * 
		 * @return String
		 */
		public String toValueString() {
			return String.valueOf(this.code);
		}

		/**
		 * 转换成label
		 * 
		 * @return String
		 */
		public String toLabelString() {
			return String.valueOf(this.label);
		}

		@Override
		public String getEnumName() {
			return this.getClass().getName();
		}
		
	}
	
	public enum HelpType implements IEnum{
			RULE("常规",0),
			AGENCY("代理",1),
			STORE("商城",2);

			/** 值 */
			private String label;

			/** 键 */
			private Integer code;
			
			private HelpType(String label, Integer code){
				this.label = label;
				this.code = code;
			}
			
			public static String getEnumLabel(Integer code) {
				for (HelpType c : HelpType.values()) {
					if (code == c.getCode()) {
						return c.label;
					}
				}
				return null;
			}

			/**
			 * 根据值取得第一个匹配的键
			 * 
			 * @param label
			 *            String
			 * @return String
			 */
			public static Integer getEnumCode(String label) {
				for (HelpType c : HelpType.values()) {
					if (StringUtils.equals(c.getLabel(), label)) {
						return c.code;
					}
				}
				return null;
			}

			/**
			 * 取得下拉框列表
			 * 
			 * @return List
			 */
			public static List<DropDownDto> getList() {
				List<DropDownDto> resultList = new ArrayList<DropDownDto>();
				for (HelpType c : HelpType.values()) {
					DropDownDto dto = new DropDownDto();
					dto.setId(c.getCode());
					dto.setName(c.getLabel());
					resultList.add(dto);
				}
				return resultList;
			}

			/**
			 * get
			 * 
			 * @return String
			 */
			public String getLabel() {
				return label;
			}

			/**
			 * set
			 * 
			 * @return String
			 */
			public Integer getCode() {
				return code;
			}

			/**
			 * String转换，中间加横杠
			 * 
			 * @return String
			 */
			@Override
			public String toString() {
				return this.label;
			}

			/**
			 * 转换成value
			 * 
			 * @return String
			 */
			public String toValueString() {
				return String.valueOf(this.code);
			}

			/**
			 * 转换成label
			 * 
			 * @return String
			 */
			public String toLabelString() {
				return String.valueOf(this.label);
			}

			@Override
			public String getEnumName() {
				return this.getClass().getName();
			}
			
		}
	
	public enum Status implements IEnum{
		APPLYING("申请中",1),
		CHECKED("已审核",2),
		DOUBLECHECKED("已复核",3),
		ADDED("已加入代理商",4),
		CANCLE("取消",5);
		/** 值 */
		private String label;

		/** 键 */
		private Integer code;
		
		private Status(String label, Integer code){
			this.label = label;
			this.code = code;
		}
		
		public static String getEnumLabel(Integer code) {
			for (Status c : Status.values()) {
				if (code == c.getCode()) {
					return c.label;
				}
			}
			return null;
		}

		/**
		 * 根据值取得第一个匹配的键
		 * 
		 * @param label
		 *            String
		 * @return String
		 */
		public static Integer getEnumCode(String label) {
			for (Status c : Status.values()) {
				if (StringUtils.equals(c.getLabel(), label)) {
					return c.code;
				}
			}
			return null;
		}

		/**
		 * 取得下拉框列表
		 * 
		 * @return List
		 */
		public static List<DropDownDto> getList() {
			List<DropDownDto> resultList = new ArrayList<DropDownDto>();
			for (Status c : Status.values()) {
				DropDownDto dto = new DropDownDto();
				dto.setId(c.getCode());
				dto.setName(c.getLabel());
				resultList.add(dto);
			}
			return resultList;
		}

		/**
		 * get
		 * 
		 * @return String
		 */
		public String getLabel() {
			return label;
		}

		/**
		 * set
		 * 
		 * @return String
		 */
		public Integer getCode() {
			return code;
		}

		/**
		 * String转换，中间加横杠
		 * 
		 * @return String
		 */
		@Override
		public String toString() {
			return this.label;
		}

		/**
		 * 转换成value
		 * 
		 * @return String
		 */
		public String toValueString() {
			return String.valueOf(this.code);
		}

		/**
		 * 转换成label
		 * 
		 * @return String
		 */
		public String toLabelString() {
			return String.valueOf(this.label);
		}

		@Override
		public String getEnumName() {
			return this.getClass().getName();
		}
		
	}
	
	/** 点位订单表中的状态*/
	public enum NodeStatus implements IEnum{
		/** "支付中",0*/
		PAYING("支付中",0),
		/** "申请中",1*/
		APPLYING("申请中",1),
		/** "已审核",2*/
		ISCHECK("已审核",2),
		/** "已复核",3*/
		REISCHECK("已复核",3),
		/** "已加入代理商",4*/
		ISADD("已加入代理商",4),
		/** "取消",5*/
		EXIT("取消",5),
		/** "已加入优秀代理商",6*/
		ISADDYX("已加入优秀代理商",6),
		/** "抢点点位分配",7*/
		DIVIDE("抢点点位分配",7);
		/** 值 */
		private String label;

		/** 键 */
		private Integer code;
		
		private NodeStatus(String label, Integer code){
			this.label = label;
			this.code = code;
		}
		
		public static String getEnumLabel(Integer code) {
			for (NodeStatus c : NodeStatus.values()) {
				if (code == c.getCode()) {
					return c.label;
				}
			}
			return null;
		}

		/**
		 * 根据值取得第一个匹配的键
		 * 
		 * @param label
		 *            String
		 * @return String
		 */
		public static Integer getEnumCode(String label) {
			for (NodeStatus c : NodeStatus.values()) {
				if (StringUtils.equals(c.getLabel(), label)) {
					return c.code;
				}
			}
			return null;
		}

		/**
		 * 取得下拉框列表
		 * 
		 * @return List
		 */
		public static List<DropDownDto> getList() {
			List<DropDownDto> resultList = new ArrayList<DropDownDto>();
			for (NodeStatus c : NodeStatus.values()) {
				DropDownDto dto = new DropDownDto();
				dto.setId(c.getCode());
				dto.setName(c.getLabel());
				resultList.add(dto);
			}
			return resultList;
		}

		/**
		 * get
		 * 
		 * @return String
		 */
		public String getLabel() {
			return label;
		}

		/**
		 * set
		 * 
		 * @return String
		 */
		public Integer getCode() {
			return code;
		}

		/**
		 * String转换，中间加横杠
		 * 
		 * @return String
		 */
		@Override
		public String toString() {
			return this.label;
		}

		/**
		 * 转换成value
		 * 
		 * @return String
		 */
		public String toValueString() {
			return String.valueOf(this.code);
		}

		/**
		 * 转换成label
		 * 
		 * @return String
		 */
		public String toLabelString() {
			return String.valueOf(this.label);
		}

		@Override
		public String getEnumName() {
			return this.getClass().getName();
		}
		
	}
	
	/** 卡券使用查询页面下拉框 ：点位订单表中的状态 ，不需要0支付中;4已加入代理商*/
	public enum NodeStatusForQuery implements IEnum{
		/** "申请中",1*/
		APPLYING("申请中",1),
		/** "已审核",2*/
		ISCHECK("已审核",2),
		/** "已复核",3*/
		REISCHECK("已复核",3),
		/** "取消",5*/
		EXIT("取消",5),
		/** "已加入优秀代理商",6*/
		ISADDYX("已加入优秀代理商",6),
		/** "抢点点位分配",7*/
		DIVIDE("抢点点位分配",7);
		/** 值 */
		private String label;

		/** 键 */
		private Integer code;
		
		private NodeStatusForQuery(String label, Integer code){
			this.label = label;
			this.code = code;
		}
		
		public static String getEnumLabel(Integer code) {
			for (NodeStatusForQuery c : NodeStatusForQuery.values()) {
				if (code == c.getCode()) {
					return c.label;
				}
			}
			return null;
		}

		/**
		 * 根据值取得第一个匹配的键
		 * 
		 * @param label
		 *            String
		 * @return String
		 */
		public static Integer getEnumCode(String label) {
			for (NodeStatusForQuery c : NodeStatusForQuery.values()) {
				if (StringUtils.equals(c.getLabel(), label)) {
					return c.code;
				}
			}
			return null;
		}

		/**
		 * 取得下拉框列表
		 * 
		 * @return List
		 */
		public static List<DropDownDto> getList() {
			List<DropDownDto> resultList = new ArrayList<DropDownDto>();
			for (NodeStatusForQuery c : NodeStatusForQuery.values()) {
				DropDownDto dto = new DropDownDto();
				dto.setId(c.getCode());
				dto.setName(c.getLabel());
				resultList.add(dto);
			}
			return resultList;
		}

		/**
		 * get
		 * 
		 * @return String
		 */
		public String getLabel() {
			return label;
		}

		/**
		 * set
		 * 
		 * @return String
		 */
		public Integer getCode() {
			return code;
		}

		/**
		 * String转换，中间加横杠
		 * 
		 * @return String
		 */
		@Override
		public String toString() {
			return this.label;
		}

		/**
		 * 转换成value
		 * 
		 * @return String
		 */
		public String toValueString() {
			return String.valueOf(this.code);
		}

		/**
		 * 转换成label
		 * 
		 * @return String
		 */
		public String toLabelString() {
			return String.valueOf(this.label);
		}

		@Override
		public String getEnumName() {
			return this.getClass().getName();
		}
		
	}
	/** 点位订单表中的状态  适用申请区查询 查询条件，不需要 0支付中*/
	public enum NodeStatusForApplyQuery implements IEnum{
		/** "申请中",1*/
		APPLYING("申请中",1),
		/** "已审核",2*/
		ISCHECK("已审核",2),
		/** "已复核",3*/
		REISCHECK("已复核",3),
		/** "已加入代理商",4*/
		ISADD("已加入代理商",4),
		/** "取消",5*/
		EXIT("取消",5),
		/** "已加入优秀代理商",6*/
		ISADDYX("已加入优秀代理商",6),
		/** "抢点点位分配",7*/
		DIVIDE("抢点点位分配",7);
		/** 值 */
		private String label;

		/** 键 */
		private Integer code;
		
		private NodeStatusForApplyQuery(String label, Integer code){
			this.label = label;
			this.code = code;
		}
		
		public static String getEnumLabel(Integer code) {
			for (NodeStatusForApplyQuery c : NodeStatusForApplyQuery.values()) {
				if (code == c.getCode()) {
					return c.label;
				}
			}
			return null;
		}

		/**
		 * 根据值取得第一个匹配的键
		 * 
		 * @param label
		 *            String
		 * @return String
		 */
		public static Integer getEnumCode(String label) {
			for (NodeStatusForApplyQuery c : NodeStatusForApplyQuery.values()) {
				if (StringUtils.equals(c.getLabel(), label)) {
					return c.code;
				}
			}
			return null;
		}

		/**
		 * 取得下拉框列表
		 * 
		 * @return List
		 */
		public static List<DropDownDto> getList() {
			List<DropDownDto> resultList = new ArrayList<DropDownDto>();
			for (NodeStatusForApplyQuery c : NodeStatusForApplyQuery.values()) {
				DropDownDto dto = new DropDownDto();
				dto.setId(c.getCode());
				dto.setName(c.getLabel());
				resultList.add(dto);
			}
			return resultList;
		}

		/**
		 * get
		 * 
		 * @return String
		 */
		public String getLabel() {
			return label;
		}

		/**
		 * set
		 * 
		 * @return String
		 */
		public Integer getCode() {
			return code;
		}

		/**
		 * String转换，中间加横杠
		 * 
		 * @return String
		 */
		@Override
		public String toString() {
			return this.label;
		}

		/**
		 * 转换成value
		 * 
		 * @return String
		 */
		public String toValueString() {
			return String.valueOf(this.code);
		}

		/**
		 * 转换成label
		 * 
		 * @return String
		 */
		public String toLabelString() {
			return String.valueOf(this.label);
		}

		@Override
		public String getEnumName() {
			return this.getClass().getName();
		}
		
	}
	/**
	 * 卡券状态
	 * 
	 */
	public enum CardStatus implements IEnum{
		NONACTIVATED("未激活",1),
		UNUSED("未使用",2),
		ASSIGNED("已分配点位",3),
		ADDED("已加入优秀代理商",4),
		CANCLE("取消",5);
		/** 值 */
		private String label;

		/** 键 */
		private Integer code;
		
		private CardStatus(String label, Integer code){
			this.label = label;
			this.code = code;
		}
		
		public static String getEnumLabel(Integer code) {
			for (CardStatus c : CardStatus.values()) {
				if (code == c.getCode()) {
					return c.label;
				}
			}
			return null;
		}

		/**
		 * 根据值取得第一个匹配的键
		 * 
		 * @param label
		 *            String
		 * @return String
		 */
		public static Integer getEnumCode(String label) {
			for (CardStatus c : CardStatus.values()) {
				if (StringUtils.equals(c.getLabel(), label)) {
					return c.code;
				}
			}
			return null;
		}

		/**
		 * 取得下拉框列表
		 * 
		 * @return List
		 */
		public static List<DropDownDto> getList() {
			List<DropDownDto> resultList = new ArrayList<DropDownDto>();
			for (CardStatus c : CardStatus.values()) {
				DropDownDto dto = new DropDownDto();
				dto.setId(c.getCode());
				dto.setName(c.getLabel());
				resultList.add(dto);
			}
			return resultList;
		}

		/**
		 * get
		 * 
		 * @return String
		 */
		public String getLabel() {
			return label;
		}

		/**
		 * set
		 * 
		 * @return String
		 */
		public Integer getCode() {
			return code;
		}

		/**
		 * String转换，中间加横杠
		 * 
		 * @return String
		 */
		@Override
		public String toString() {
			return this.label;
		}

		/**
		 * 转换成value
		 * 
		 * @return String
		 */
		public String toValueString() {
			return String.valueOf(this.code);
		}

		/**
		 * 转换成label
		 * 
		 * @return String
		 */
		public String toLabelString() {
			return String.valueOf(this.label);
		}

		@Override
		public String getEnumName() {
			return this.getClass().getName();
		}
		
	}
	
	/**
	 * 卡券类型
	 * 
	 */
	public enum CardType implements IEnum{
		FTCARD("复投卡券",1),
		QDCARD("抢点卡券",2);
		/** 值 */
		private String label;

		/** 键 */
		private Integer code;
		
		private CardType(String label, Integer code){
			this.label = label;
			this.code = code;
		}
		
		public static String getEnumLabel(Integer code) {
			for (CardType c : CardType.values()) {
				if (code == c.getCode()) {
					return c.label;
				}
			}
			return null;
		}

		/**
		 * 根据值取得第一个匹配的键
		 * 
		 * @param label
		 *            String
		 * @return String
		 */
		public static Integer getEnumCode(String label) {
			for (CardType c : CardType.values()) {
				if (StringUtils.equals(c.getLabel(), label)) {
					return c.code;
				}
			}
			return null;
		}

		/**
		 * 取得下拉框列表
		 * 
		 * @return List
		 */
		public static List<DropDownDto> getList() {
			List<DropDownDto> resultList = new ArrayList<DropDownDto>();
			for (CardType c : CardType.values()) {
				DropDownDto dto = new DropDownDto();
				dto.setId(c.getCode());
				dto.setName(c.getLabel());
				resultList.add(dto);
			}
			return resultList;
		}

		/**
		 * get
		 * 
		 * @return String
		 */
		public String getLabel() {
			return label;
		}

		/**
		 * set
		 * 
		 * @return String
		 */
		public Integer getCode() {
			return code;
		}

		/**
		 * String转换，中间加横杠
		 * 
		 * @return String
		 */
		@Override
		public String toString() {
			return this.label;
		}

		/**
		 * 转换成value
		 * 
		 * @return String
		 */
		public String toValueString() {
			return String.valueOf(this.code);
		}

		/**
		 * 转换成label
		 * 
		 * @return String
		 */
		public String toLabelString() {
			return String.valueOf(this.label);
		}

		@Override
		public String getEnumName() {
			return this.getClass().getName();
		}
		
	}
	
	/**
	 * 财务出支出类型
	 * 
	 */
	public enum PayType implements IEnum{
		AGENTRECOMMED("代理商推荐奖",1),
		AGENTFIRSTBONUS("代理商一级团奖",2),
		AGENTSECONDBONUS("代理商二级团奖",3),
		AGENTTHIRDBONUS("代理商三级团奖",4),
		GOODAGENTFIRSTBONUS("优秀代理商一级团奖",5),
		GOODAGENTSECONDBONUS("优秀代理商二级团奖",6),
		GOODAGENTTHIRDBONUS("优秀代理商三级团奖",7),
		GOODAGENTfAILD("优秀代理商晋级失败返还",8),
		AGENTFEE("代理商资格费返还",9),
		POS("报单中心提成",10);
		/** 值 */
		private String label;

		/** 键 */
		private Integer code;
		
		private PayType(String label, Integer code){
			this.label = label;
			this.code = code;
		}
		
		public static String getEnumLabel(Integer code) {
			for (PayType c : PayType.values()) {
				if (code == c.getCode()) {
					return c.label;
				}
			}
			return null;
		}

		/**
		 * 根据值取得第一个匹配的键
		 * 
		 * @param label
		 *            String
		 * @return String
		 */
		public static Integer getEnumCode(String label) {
			for (PayType c : PayType.values()) {
				if (StringUtils.equals(c.getLabel(), label)) {
					return c.code;
				}
			}
			return null;
		}

		/**
		 * 取得下拉框列表
		 * 
		 * @return List
		 */
		public static List<DropDownDto> getList() {
			List<DropDownDto> resultList = new ArrayList<DropDownDto>();
			for (PayType c : PayType.values()) {
				DropDownDto dto = new DropDownDto();
				dto.setId(c.getCode());
				dto.setName(c.getLabel());
				resultList.add(dto);
			}
			return resultList;
		}

		/**
		 * get
		 * 
		 * @return String
		 */
		public String getLabel() {
			return label;
		}

		/**
		 * set
		 * 
		 * @return String
		 */
		public Integer getCode() {
			return code;
		}

		/**
		 * String转换，中间加横杠
		 * 
		 * @return String
		 */
		@Override
		public String toString() {
			return this.label;
		}

		/**
		 * 转换成value
		 * 
		 * @return String
		 */
		public String toValueString() {
			return String.valueOf(this.code);
		}

		/**
		 * 转换成label
		 * 
		 * @return String
		 */
		public String toLabelString() {
			return String.valueOf(this.label);
		}

		@Override
		public String getEnumName() {
			return this.getClass().getName();
		}
		
	}
	
	/**
	 * 消息类别
	 * 
	 */
	public enum MessageType implements IEnum{
		COMMON("共通",1),
		PRIVATE("个人",2);
		/** 值 */
		private String label;

		/** 键 */
		private Integer code;
		
		private MessageType(String label, Integer code){
			this.label = label;
			this.code = code;
		}
		
		public static String getEnumLabel(Integer code) {
			for (MessageType c : MessageType.values()) {
				if (code == c.getCode()) {
					return c.label;
				}
			}
			return null;
		}

		/**
		 * 根据值取得第一个匹配的键
		 * 
		 * @param label
		 *            String
		 * @return String
		 */
		public static Integer getEnumCode(String label) {
			for (MessageType c : MessageType.values()) {
				if (StringUtils.equals(c.getLabel(), label)) {
					return c.code;
				}
			}
			return null;
		}

		/**
		 * 取得下拉框列表
		 * 
		 * @return List
		 */
		public static List<DropDownDto> getList() {
			List<DropDownDto> resultList = new ArrayList<DropDownDto>();
			for (MessageType c : MessageType.values()) {
				DropDownDto dto = new DropDownDto();
				dto.setId(c.getCode());
				dto.setName(c.getLabel());
				resultList.add(dto);
			}
			return resultList;
		}

		/**
		 * get
		 * 
		 * @return String
		 */
		public String getLabel() {
			return label;
		}

		/**
		 * set
		 * 
		 * @return String
		 */
		public Integer getCode() {
			return code;
		}

		/**
		 * String转换，中间加横杠
		 * 
		 * @return String
		 */
		@Override
		public String toString() {
			return this.label;
		}

		/**
		 * 转换成value
		 * 
		 * @return String
		 */
		public String toValueString() {
			return String.valueOf(this.code);
		}

		/**
		 * 转换成label
		 * 
		 * @return String
		 */
		public String toLabelString() {
			return String.valueOf(this.label);
		}

		@Override
		public String getEnumName() {
			return this.getClass().getName();
		}
		
	}
	
	/**
	 * 会员状态（0：正常用户，1：黑名单账户）
	 * 
	 */
	public enum MemberType implements IEnum{
		NORMAL("正常",0),
		BLACKLIST("黑名单",1);
		/** 值 */
		private String label;

		/** 键 */
		private Integer code;
		
		private MemberType(String label, Integer code){
			this.label = label;
			this.code = code;
		}
		
		public static String getEnumLabel(Integer code) {
			for (MemberType c : MemberType.values()) {
				if (code == c.getCode()) {
					return c.label;
				}
			}
			return null;
		}

		/**
		 * 根据值取得第一个匹配的键
		 * 
		 * @param label
		 *            String
		 * @return String
		 */
		public static Integer getEnumCode(String label) {
			for (MemberType c : MemberType.values()) {
				if (StringUtils.equals(c.getLabel(), label)) {
					return c.code;
				}
			}
			return null;
		}

		/**
		 * 取得下拉框列表
		 * 
		 * @return List
		 */
		public static List<DropDownDto> getList() {
			List<DropDownDto> resultList = new ArrayList<DropDownDto>();
			for (MemberType c : MemberType.values()) {
				DropDownDto dto = new DropDownDto();
				dto.setId(c.getCode());
				dto.setName(c.getLabel());
				resultList.add(dto);
			}
			return resultList;
		}

		/**
		 * get
		 * 
		 * @return String
		 */
		public String getLabel() {
			return label;
		}

		/**
		 * set
		 * 
		 * @return String
		 */
		public Integer getCode() {
			return code;
		}

		/**
		 * String转换，中间加横杠
		 * 
		 * @return String
		 */
		@Override
		public String toString() {
			return this.label;
		}

		/**
		 * 转换成value
		 * 
		 * @return String
		 */
		public String toValueString() {
			return String.valueOf(this.code);
		}

		/**
		 * 转换成label
		 * 
		 * @return String
		 */
		public String toLabelString() {
			return String.valueOf(this.label);
		}

		@Override
		public String getEnumName() {
			return this.getClass().getName();
		}
		
	}
	/**
	 * 会员状态（0：正常用户，1：黑名单账户）
	 * 
	 */
	public enum MemberTrust implements IEnum{
		NOTRUST("正常用户",0),
		TRUST("托管用户",1);
		/** 值 */
		private String label;

		/** 键 */
		private Integer code;
		
		private MemberTrust(String label, Integer code){
			this.label = label;
			this.code = code;
		}
		
		public static String getEnumLabel(Integer code) {
			for (MemberTrust c : MemberTrust.values()) {
				if (code == c.getCode()) {
					return c.label;
				}
			}
			return null;
		}

		/**
		 * 根据值取得第一个匹配的键
		 * 
		 * @param label
		 *            String
		 * @return String
		 */
		public static Integer getEnumCode(String label) {
			for (MemberTrust c : MemberTrust.values()) {
				if (StringUtils.equals(c.getLabel(), label)) {
					return c.code;
				}
			}
			return null;
		}

		/**
		 * 取得下拉框列表
		 * 
		 * @return List
		 */
		public static List<DropDownDto> getList() {
			List<DropDownDto> resultList = new ArrayList<DropDownDto>();
			for (MemberTrust c : MemberTrust.values()) {
				DropDownDto dto = new DropDownDto();
				dto.setId(c.getCode());
				dto.setName(c.getLabel());
				resultList.add(dto);
			}
			return resultList;
		}

		/**
		 * get
		 * 
		 * @return String
		 */
		public String getLabel() {
			return label;
		}

		/**
		 * set
		 * 
		 * @return String
		 */
		public Integer getCode() {
			return code;
		}

		/**
		 * String转换，中间加横杠
		 * 
		 * @return String
		 */
		@Override
		public String toString() {
			return this.label;
		}

		/**
		 * 转换成value
		 * 
		 * @return String
		 */
		public String toValueString() {
			return String.valueOf(this.code);
		}

		/**
		 * 转换成label
		 * 
		 * @return String
		 */
		public String toLabelString() {
			return String.valueOf(this.label);
		}

		@Override
		public String getEnumName() {
			return this.getClass().getName();
		}
		
	}
	/**
	 * 
	 * 提现管理表中状态
	 * 1.待审核,2.已审核,3.打款
	 */
	public enum WithdrawStatus implements IEnum{
		/** 待审核 */
		APPLY("待审核",1),
		/** 已审核 */
		BIDING("已审核",2),
		/** 已打款 */
		COMPLETE("已打款",3),
		/** 已拒绝 */
		REFUSE("已拒绝",4);

		/** 值 */
		private String label;

		/** 键 */
		private Integer code;
		
		private WithdrawStatus(String label, Integer code){
			this.label = label;
			this.code = code;
		}
		
		public static String getEnumLabel(Integer code) {
			for (WithdrawStatus c : WithdrawStatus.values()) {
				if (code == c.getCode()) {
					return c.label;
				}
			}
			return null;
		}

		/**
		 * 根据值取得第一个匹配的键
		 * 
		 * @param label
		 *            String
		 * @return String
		 */
		public static Integer getEnumCode(String label) {
			for (WithdrawStatus c : WithdrawStatus.values()) {
				if (StringUtils.equals(c.getLabel(), label)) {
					return c.code;
				}
			}
			return null;
		}

		/**
		 * 取得下拉框列表
		 * 
		 * @return List
		 */
		public static List<DropDownDto> getList() {
			List<DropDownDto> resultList = new ArrayList<DropDownDto>();
			for (WithdrawStatus c : WithdrawStatus.values()) {
				DropDownDto dto = new DropDownDto();
				dto.setId(c.getCode());
				dto.setName(c.getLabel());
				resultList.add(dto);
			}
			return resultList;
		}

		/**
		 * get
		 * 
		 * @return String
		 */
		public String getLabel() {
			return label;
		}

		/**
		 * set
		 * 
		 * @return String
		 */
		public Integer getCode() {
			return code;
		}

		/**
		 * String转换，中间加横杠
		 * 
		 * @return String
		 */
		@Override
		public String toString() {
			return this.label;
		}

		/**
		 * 转换成value
		 * 
		 * @return String
		 */
		public String toValueString() {
			return String.valueOf(this.code);
		}

		/**
		 * 转换成label
		 * 
		 * @return String
		 */
		public String toLabelString() {
			return String.valueOf(this.label);
		}

		@Override
		public String getEnumName() {
			return this.getClass().getName();
		}
		
	}
	

	public enum PaymentType implements IEnum{
		/*线上*/
		ONLINE("线上",1),
		/*线下*/
		OFFLINE("线下",2);

		/** 值 */
		private String label;

		/** 键 */
		private Integer code;
		
		private PaymentType(String label, Integer code){
			this.label = label;
			this.code = code;
		}
		
		public static String getEnumLabel(Integer code) {
			for (PaymentType c : PaymentType.values()) {
				if (code == c.getCode()) {
					return c.label;
				}
			}
			return null;
		}

		/**
		 * 根据值取得第一个匹配的键
		 * 
		 * @param label
		 *            String
		 * @return String
		 */
		public static Integer getEnumCode(String label) {
			for (PaymentType c : PaymentType.values()) {
				if (StringUtils.equals(c.getLabel(), label)) {
					return c.code;
				}
			}
			return null;
		}

		/**
		 * 取得下拉框列表
		 * 
		 * @return List
		 */
		public static List<DropDownDto> getList() {
			List<DropDownDto> resultList = new ArrayList<DropDownDto>();
			for (PaymentType c : PaymentType.values()) {
				DropDownDto dto = new DropDownDto();
				dto.setId(c.getCode());
				dto.setName(c.getLabel());
				resultList.add(dto);
			}
			return resultList;
		}

		/**
		 * get
		 * 
		 * @return String
		 */
		public String getLabel() {
			return label;
		}

		/**
		 * set
		 * 
		 * @return String
		 */
		public Integer getCode() {
			return code;
		}

		/**
		 * String转换，中间加横杠
		 * 
		 * @return String
		 */
		@Override
		public String toString() {
			return this.label;
		}

		/**
		 * 转换成value
		 * 
		 * @return String
		 */
		public String toValueString() {
			return String.valueOf(this.code);
		}

		/**
		 * 转换成label
		 * 
		 * @return String
		 */
		public String toLabelString() {
			return String.valueOf(this.label);
		}

		@Override
		public String getEnumName() {
			return this.getClass().getName();
		}
		
	}
	
	

	public enum PaymentChannel implements IEnum{
		/*现金*/
		CASH("现金支付",1),
		/*银联*/
//		UNIONPAY("银联支付",2),
		/*支付宝*/
		ALIPAY("刷卡支付",3),
		/*微信 */
//		WECHATPAY("微信支付",4),
		/*余额*/
		//BALANCEPAY("余额支付",5)
		;
		/** 值 */
		private String label;

		/** 键 */
		private Integer code;
		
		private PaymentChannel(String label, Integer code){
			this.label = label;
			this.code = code;
		}
		
		public static String getEnumLabel(Integer code) {
			for (PaymentChannel c : PaymentChannel.values()) {
				if (code == c.getCode()) {
					return c.label;
				}
			}
			return null;
		}

		/**
		 * 根据值取得第一个匹配的键
		 * 
		 * @param label
		 *            String
		 * @return String
		 */
		public static Integer getEnumCode(String label) {
			for (PaymentChannel c : PaymentChannel.values()) {
				if (StringUtils.equals(c.getLabel(), label)) {
					return c.code;
				}
			}
			return null;
		}

		/**
		 * 取得下拉框列表
		 * 
		 * @return List
		 */
		public static List<DropDownDto> getList() {
			List<DropDownDto> resultList = new ArrayList<DropDownDto>();
			for (PaymentChannel c : PaymentChannel.values()) {
				DropDownDto dto = new DropDownDto();
				dto.setId(c.getCode());
				dto.setName(c.getLabel());
				resultList.add(dto);
			}
			return resultList;
		}

		/**
		 * get
		 * 
		 * @return String
		 */
		public String getLabel() {
			return label;
		}

		/**
		 * set
		 * 
		 * @return String
		 */
		public Integer getCode() {
			return code;
		}

		/**
		 * String转换，中间加横杠
		 * 
		 * @return String
		 */
		@Override
		public String toString() {
			return this.label;
		}

		/**
		 * 转换成value
		 * 
		 * @return String
		 */
		public String toValueString() {
			return String.valueOf(this.code);
		}

		/**
		 * 转换成label
		 * 
		 * @return String
		 */
		public String toLabelString() {
			return String.valueOf(this.label);
		}

		@Override
		public String getEnumName() {
			return this.getClass().getName();
		}
		
	}
	/**
	 * 结束点位表的位置
	 * @author zhangcd
	 *
	 */
	public enum OutNodeLocation implements IEnum{
		FROMA("A区进入",1),
		FROMM("中间区进入",2),
		FROMB("B区进入",3);
		/** 值 */
		private String label;

		/** 键 */
		private Integer code;
		
		private OutNodeLocation(String label, Integer code){
			this.label = label;
			this.code = code;
		}
		
		public static String getEnumLabel(Integer code) {
			for (OutNodeLocation c : OutNodeLocation.values()) {
				if (code == c.getCode()) {
					return c.label;
				}
			}
			return null;
		}

		/**
		 * 根据值取得第一个匹配的键
		 * 
		 * @param label
		 *            String
		 * @return String
		 */
		public static Integer getEnumCode(String label) {
			for (OutNodeLocation c : OutNodeLocation.values()) {
				if (StringUtils.equals(c.getLabel(), label)) {
					return c.code;
				}
			}
			return null;
		}

		/**
		 * 取得下拉框列表
		 * 
		 * @return List
		 */
		public static List<DropDownDto> getList() {
			List<DropDownDto> resultList = new ArrayList<DropDownDto>();
			for (OutNodeLocation c : OutNodeLocation.values()) {
				DropDownDto dto = new DropDownDto();
				dto.setId(c.getCode());
				dto.setName(c.getLabel());
				resultList.add(dto);
			}
			return resultList;
		}

		/**
		 * get
		 * 
		 * @return String
		 */
		public String getLabel() {
			return label;
		}

		/**
		 * set
		 * 
		 * @return String
		 */
		public Integer getCode() {
			return code;
		}

		/**
		 * String转换，中间加横杠
		 * 
		 * @return String
		 */
		@Override
		public String toString() {
			return this.label;
		}

		/**
		 * 转换成value
		 * 
		 * @return String
		 */
		public String toValueString() {
			return String.valueOf(this.code);
		}

		/**
		 * 转换成label
		 * 
		 * @return String
		 */
		public String toLabelString() {
			return String.valueOf(this.label);
		}

		@Override
		public String getEnumName() {
			return this.getClass().getName();
		}
		
	}
	/**
	 * 点位账户的类别
	 * @author zhangcd
	 *
	 */
	public enum NodeAccountType implements IEnum{
		COMMEND("推荐奖480",1),
		AONE("A一层474",2),
		ATWO("A二层2133",3),
		ATHREE("A三层2133",4),
		BONE("B一层600",5),
		BTWO("B二层800",6),
		BTHREE("B三层3200",7),
		FREERETURN("本金返还1580",8);
		/** 值 */
		private String label;

		/** 键 */
		private Integer code;
		
		private NodeAccountType(String label, Integer code){
			this.label = label;
			this.code = code;
		}
		
		public static String getEnumLabel(Integer code) {
			for (NodeAccountType c : NodeAccountType.values()) {
				if (code == c.getCode()) {
					return c.label;
				}
			}
			return null;
		}

		/**
		 * 根据值取得第一个匹配的键
		 * 
		 * @param label
		 *            String
		 * @return String
		 */
		public static Integer getEnumCode(String label) {
			for (NodeAccountType c : NodeAccountType.values()) {
				if (StringUtils.equals(c.getLabel(), label)) {
					return c.code;
				}
			}
			return null;
		}

		/**
		 * 取得下拉框列表
		 * 
		 * @return List
		 */
		public static List<DropDownDto> getList() {
			List<DropDownDto> resultList = new ArrayList<DropDownDto>();
			for (NodeAccountType c : NodeAccountType.values()) {
				DropDownDto dto = new DropDownDto();
				dto.setId(c.getCode());
				dto.setName(c.getLabel());
				resultList.add(dto);
			}
			return resultList;
		}

		/**
		 * get
		 * 
		 * @return String
		 */
		public String getLabel() {
			return label;
		}

		/**
		 * set
		 * 
		 * @return String
		 */
		public Integer getCode() {
			return code;
		}

		/**
		 * String转换，中间加横杠
		 * 
		 * @return String
		 */
		@Override
		public String toString() {
			return this.label;
		}

		/**
		 * 转换成value
		 * 
		 * @return String
		 */
		public String toValueString() {
			return String.valueOf(this.code);
		}

		/**
		 * 转换成label
		 * 
		 * @return String
		 */
		public String toLabelString() {
			return String.valueOf(this.label);
		}

		@Override
		public String getEnumName() {
			return this.getClass().getName();
		}
		
	}
	
	public enum payment implements IEnum{
		RECOMMEND("推荐奖",1),
		AONE("A1奖",2),
		ATWO("A2奖",3),
		ATHREE("A3奖",4),
		BONE("B1奖",5),
		BTWO("B2奖",6),
		BTHREE("B3奖",7),
		RETURN("死点返还",8),
		AGENTRETURN("中间区踢出返还",9);
		/** 值 */
		private String label;

		/** 键 */
		private Integer code;
		
		private payment(String label, Integer code){
			this.label = label;
			this.code = code;
		}
		
		public static String getEnumLabel(Integer code) {
			for (payment c : payment.values()) {
				if (code == c.getCode()) {
					return c.label;
				}
			}
			return null;
		}

		/**
		 * 根据值取得第一个匹配的键
		 * 
		 * @param label
		 *            String
		 * @return String
		 */
		public static Integer getEnumCode(String label) {
			for (payment c : payment.values()) {
				if (StringUtils.equals(c.getLabel(), label)) {
					return c.code;
				}
			}
			return null;
		}

		/**
		 * 取得下拉框列表
		 * 
		 * @return List
		 */
		public static List<DropDownDto> getList() {
			List<DropDownDto> resultList = new ArrayList<DropDownDto>();
			for (payment c : payment.values()) {
				DropDownDto dto = new DropDownDto();
				dto.setId(c.getCode());
				dto.setName(c.getLabel());
				resultList.add(dto);
			}
			return resultList;
		}

		/**
		 * get
		 * 
		 * @return String
		 */
		public String getLabel() {
			return label;
		}

		/**
		 * set
		 * 
		 * @return String
		 */
		public Integer getCode() {
			return code;
		}

		/**
		 * String转换，中间加横杠
		 * 
		 * @return String
		 */
		@Override
		public String toString() {
			return this.label;
		}

		/**
		 * 转换成value
		 * 
		 * @return String
		 */
		public String toValueString() {
			return String.valueOf(this.code);
		}

		/**
		 * 转换成label
		 * 
		 * @return String
		 */
		public String toLabelString() {
			return String.valueOf(this.label);
		}

		@Override
		public String getEnumName() {
			return this.getClass().getName();
		}
		
	}
	
	/**收入类型：1.A区资格费 2.B区资格费 3.充值 */
	public enum IncomeType implements IEnum{
		AFEE("A区资格费",1),
		BFEE("B区资格费",2),
		RECHARGER("充值",3),
		POS("POS机购买",4);
		/** 值 */
		private String label;

		/** 键 */
		private Integer code;
		
		private IncomeType(String label, Integer code){
			this.label = label;
			this.code = code;
		}
		
		public static String getEnumLabel(Integer code) {
			for (IncomeType c : IncomeType.values()) {
				if (code == c.getCode()) {
					return c.label;
				}
			}
			return null;
		}

		/**
		 * 根据值取得第一个匹配的键
		 * 
		 * @param label
		 *            String
		 * @return String
		 */
		public static Integer getEnumCode(String label) {
			for (IncomeType c : IncomeType.values()) {
				if (StringUtils.equals(c.getLabel(), label)) {
					return c.code;
				}
			}
			return null;
		}

		/**
		 * 取得下拉框列表
		 * 
		 * @return List
		 */
		public static List<DropDownDto> getList() {
			List<DropDownDto> resultList = new ArrayList<DropDownDto>();
			for (IncomeType c : IncomeType.values()) {
				DropDownDto dto = new DropDownDto();
				dto.setId(c.getCode());
				dto.setName(c.getLabel());
				resultList.add(dto);
			}
			return resultList;
		}

		/**
		 * get
		 * 
		 * @return String
		 */
		public String getLabel() {
			return label;
		}

		/**
		 * set
		 * 
		 * @return String
		 */
		public Integer getCode() {
			return code;
		}

		/**
		 * String转换，中间加横杠
		 * 
		 * @return String
		 */
		@Override
		public String toString() {
			return this.label;
		}

		/**
		 * 转换成value
		 * 
		 * @return String
		 */
		public String toValueString() {
			return String.valueOf(this.code);
		}

		/**
		 * 转换成label
		 * 
		 * @return String
		 */
		public String toLabelString() {
			return String.valueOf(this.label);
		}

		@Override
		public String getEnumName() {
			return this.getClass().getName();
		}
		
	}
	
	/**
	 * 权限
	 */
	public enum RoleType implements IEnum{
		
		ADMINISTRATOR("系统管理",4),
		
		OPERATIONMANAGER("运营主管（复核）",2),
		
		OPERATION("运营操作（审核）",3),
		
		BRANCH("开单中心（申请）",Global.getBranchRoleId()),
		
		POSSTRATOR("POS管理",6),
		
		FINANCE("财务",5);

		
		
		/** 值 */
		private String label;

		/** 键 */
		private Integer code;
		
		private RoleType(String label, Integer code){
			this.label = label;
			this.code = code;
		}
		
		public static String getEnumLabel(Integer code) {
			for (RoleType c : RoleType.values()) {
				if (code == c.getCode()) {
					return c.label;
				}
			}
			return null;
		}

		/**
		 * 根据值取得第一个匹配的键
		 * 
		 * @param label
		 *            String
		 * @return String
		 */
		public static Integer getEnumCode(String label) {
			for (RoleType c : RoleType.values()) {
				if (StringUtils.equals(c.getLabel(), label)) {
					return c.code;
				}
			}
			return null;
		}

		/**
		 * 取得下拉框列表
		 * 
		 * @return List
		 */
		public static List<DropDownDto> getList() {
			List<DropDownDto> resultList = new ArrayList<DropDownDto>();
			for (RoleType c : RoleType.values()) {
				DropDownDto dto = new DropDownDto();
				dto.setId(c.getCode());
				dto.setName(c.getLabel());
				resultList.add(dto);
			}
			return resultList;
		}

		/**
		 * get
		 * 
		 * @return String
		 */
		public String getLabel() {
			return label;
		}

		/**
		 * set
		 * 
		 * @return String
		 */
		public Integer getCode() {
			return code;
		}

		/**
		 * String转换，中间加横杠
		 * 
		 * @return String
		 */
		@Override
		public String toString() {
			return this.label;
		}

		/**
		 * 转换成value
		 * 
		 * @return String
		 */
		public String toValueString() {
			return String.valueOf(this.code);
		}

		/**
		 * 转换成label
		 * 
		 * @return String
		 */
		public String toLabelString() {
			return String.valueOf(this.label);
		}

		@Override
		public String getEnumName() {
			return this.getClass().getName();
		}
		
	}
	
	/** 用户角色类型*/
	public enum userRole implements IEnum{
		/** 报单中心 1*/
		ORDERCENTER("报单中心",1),
		/** 系统管理员 2*/
		SYSTEM("系统管理员",2),
		/** A区操作员 3*/
		AAREA("A区操作员",3);

		/** 值 */
		private String label;

		/** 键 */
		private Integer code;
		
		private userRole(String label, Integer code){
			this.label = label;
			this.code = code;
		}
		
		public static String getEnumLabel(Integer code) {
			for (userRole c : userRole.values()) {
				if (code == c.getCode()) {
					return c.label;
				}
			}
			return null;
		}

		/**
		 * 根据值取得第一个匹配的键
		 * 
		 * @param label
		 *            String
		 * @return String
		 */
		public static Integer getEnumCode(String label) {
			for (userRole c : userRole.values()) {
				if (StringUtils.equals(c.getLabel(), label)) {
					return c.code;
				}
			}
			return null;
		}

		/**
		 * 取得下拉框列表
		 * 
		 * @return List
		 */
		public static List<DropDownDto> getList() {
			List<DropDownDto> resultList = new ArrayList<DropDownDto>();
			for (userRole c : userRole.values()) {
				DropDownDto dto = new DropDownDto();
				dto.setId(c.getCode());
				dto.setName(c.getLabel());
				resultList.add(dto);
			}
			return resultList;
		}

		/**
		 * get
		 * 
		 * @return String
		 */
		public String getLabel() {
			return label;
		}

		/**
		 * set
		 * 
		 * @return String
		 */
		public Integer getCode() {
			return code;
		}

		/**
		 * String转换，中间加横杠
		 * 
		 * @return String
		 */
		@Override
		public String toString() {
			return this.label;
		}

		/**
		 * 转换成value
		 * 
		 * @return String
		 */
		public String toValueString() {
			return String.valueOf(this.code);
		}

		/**
		 * 转换成label
		 * 
		 * @return String
		 */
		public String toLabelString() {
			return String.valueOf(this.label);
		}

		@Override
		public String getEnumName() {
			return this.getClass().getName();
		}
		
	}
	/**
	 * 中间区节点状态
	 */
	public enum MiddleNodeType implements IEnum{
		
		B_NODE("可以进入B区",1),
		
		PICK_NODE("待抢点",2),
		
		PICKED_NODE("已抢点",3),
		
		OUT_NODE("出局点",4);
		
		
		/** 值 */
		private String label;

		/** 键 */
		private Integer code;
		
		private MiddleNodeType(String label, Integer code){
			this.label = label;
			this.code = code;
		}
		
		public static String getEnumLabel(Integer code) {
			for (MiddleNodeType c : MiddleNodeType.values()) {
				if (code == c.getCode()) {
					return c.label;
				}
			}
			return null;
		}

		/**
		 * 根据值取得第一个匹配的键
		 * 
		 * @param label
		 *            String
		 * @return String
		 */
		public static Integer getEnumCode(String label) {
			for (MiddleNodeType c : MiddleNodeType.values()) {
				if (StringUtils.equals(c.getLabel(), label)) {
					return c.code;
				}
			}
			return null;
		}

		/**
		 * 取得下拉框列表
		 * 
		 * @return List
		 */
		public static List<DropDownDto> getList() {
			List<DropDownDto> resultList = new ArrayList<DropDownDto>();
			for (MiddleNodeType c : MiddleNodeType.values()) {
				DropDownDto dto = new DropDownDto();
				dto.setId(c.getCode());
				dto.setName(c.getLabel());
				resultList.add(dto);
			}
			return resultList;
		}

		/**
		 * get
		 * 
		 * @return String
		 */
		public String getLabel() {
			return label;
		}

		/**
		 * set
		 * 
		 * @return String
		 */
		public Integer getCode() {
			return code;
		}

		/**
		 * String转换，中间加横杠
		 * 
		 * @return String
		 */
		@Override
		public String toString() {
			return this.label;
		}

		/**
		 * 转换成value
		 * 
		 * @return String
		 */
		public String toValueString() {
			return String.valueOf(this.code);
		}

		/**
		 * 转换成label
		 * 
		 * @return String
		 */
		public String toLabelString() {
			return String.valueOf(this.label);
		}

		@Override
		public String getEnumName() {
			return this.getClass().getName();
		}
		
	}
	
	/**
	 * 母子节点
	 */
	public enum Node implements IEnum{
		ALLNODE("全部",0),
		MotherNode("母点",1),
		SonNode("子节点",2);
		/** 值 */
		private String label;

		/** 键 */
		private Integer code;
		
		private Node(String label, Integer code){
			this.label = label;
			this.code = code;
		}
		
		public static String getEnumLabel(Integer code) {
			for (Node c : Node.values()) {
				if (code == c.getCode()) {
					return c.label;
				}
			}
			return null;
		}

		/**
		 * 根据值取得第一个匹配的键
		 * 
		 * @param label
		 *            String
		 * @return String
		 */
		public static Integer getEnumCode(String label) {
			for (Node c : Node.values()) {
				if (StringUtils.equals(c.getLabel(), label)) {
					return c.code;
				}
			}
			return null;
		}

		/**
		 * 取得下拉框列表
		 * 
		 * @return List
		 */
		public static List<DropDownDto> getList() {
			List<DropDownDto> resultList = new ArrayList<DropDownDto>();
			for (Node c : Node.values()) {
				DropDownDto dto = new DropDownDto();
				dto.setId(c.getCode());
				dto.setName(c.getLabel());
				resultList.add(dto);
			}
			return resultList;
		}

		/**
		 * get
		 * 
		 * @return String
		 */
		public String getLabel() {
			return label;
		}

		/**
		 * set
		 * 
		 * @return String
		 */
		public Integer getCode() {
			return code;
		}

		/**
		 * String转换，中间加横杠
		 * 
		 * @return String
		 */
		@Override
		public String toString() {
			return this.label;
		}

		/**
		 * 转换成value
		 * 
		 * @return String
		 */
		public String toValueString() {
			return String.valueOf(this.code);
		}

		/**
		 * 转换成label
		 * 
		 * @return String
		 */
		public String toLabelString() {
			return String.valueOf(this.label);
		}

		@Override
		public String getEnumName() {
			return this.getClass().getName();
		}
		
	}
	/** 点位订单表-点位类型*/
	public enum NodeSort implements IEnum{
		/** 1 代理商点位 */
		A("代理商点位",1),
		/** 2 优秀代理商点位 */
		B("优秀代理商点位",2),
		P("POS机器购买",3);
		/** 值 */
		private String label;

		/** 键 */
		private Integer code;
		
		private NodeSort(String label, Integer code){
			this.label = label;
			this.code = code;
		}
		
		public static String getEnumLabel(Integer code) {
			for (NodeSort c : NodeSort.values()) {
				if (code == c.getCode()) {
					return c.label;
				}
			}
			return null;
		}

		/**
		 * 根据值取得第一个匹配的键
		 * 
		 * @param label
		 *            String
		 * @return String
		 */
		public static Integer getEnumCode(String label) {
			for (NodeSort c : NodeSort.values()) {
				if (StringUtils.equals(c.getLabel(), label)) {
					return c.code;
				}
			}
			return null;
		}

		/**
		 * 取得下拉框列表
		 * 
		 * @return List
		 */
		public static List<DropDownDto> getList() {
			List<DropDownDto> resultList = new ArrayList<DropDownDto>();
			for (NodeSort c : NodeSort.values()) {
				DropDownDto dto = new DropDownDto();
				dto.setId(c.getCode());
				dto.setName(c.getLabel());
				resultList.add(dto);
			}
			return resultList;
		}

		/**
		 * get
		 * 
		 * @return String
		 */
		public String getLabel() {
			return label;
		}

		/**
		 * set
		 * 
		 * @return String
		 */
		public Integer getCode() {
			return code;
		}

		/**
		 * String转换，中间加横杠
		 * 
		 * @return String
		 */
		@Override
		public String toString() {
			return this.label;
		}

		/**
		 * 转换成value
		 * 
		 * @return String
		 */
		public String toValueString() {
			return String.valueOf(this.code);
		}

		/**
		 * 转换成label
		 * 
		 * @return String
		 */
		public String toLabelString() {
			return String.valueOf(this.label);
		}

		@Override
		public String getEnumName() {
			return this.getClass().getName();
		}
		
	}
	
	public enum Default implements IEnum{
		
		//默认
		isDefault("默认",1),
		//非默认
		noDefault("非默认",0);
		

		/** 值 */
		private String label;

		/** 键 */
		private Integer code;
		
		private Default(String label, Integer code){
			this.label = label;
			this.code = code;
		}
		
		public static String getEnumLabel(Integer code) {
			for (Default c : Default.values()) {
				if (code == c.getCode()) {
					return c.label;
				}
			}
			return null;
		}

		/**
		 * 根据值取得第一个匹配的键
		 * 
		 * @param label
		 *            String
		 * @return String
		 */
		public static Integer getEnumCode(String label) {
			for (Default c : Default.values()) {
				if (StringUtils.equals(c.getLabel(), label)) {
					return c.code;
				}
			}
			return null;
		}

		/**
		 * 取得下拉框列表
		 * 
		 * @return List
		 */
		public static List<DropDownDto> getList() {
			List<DropDownDto> resultList = new ArrayList<DropDownDto>();
			for (Default c : Default.values()) {
				DropDownDto dto = new DropDownDto();
				dto.setId(c.getCode());
				dto.setName(c.getLabel());
				resultList.add(dto);
			}
			return resultList;
		}

		/**
		 * get
		 * 
		 * @return String
		 */
		public String getLabel() {
			return label;
		}

		/**
		 * set
		 * 
		 * @return String
		 */
		public Integer getCode() {
			return code;
		}

		/**
		 * String转换，中间加横杠
		 * 
		 * @return String
		 */
		@Override
		public String toString() {
			return this.label;
		}

		/**
		 * 转换成value
		 * 
		 * @return String
		 */
		public String toValueString() {
			return String.valueOf(this.code);
		}

		/**
		 * 转换成label
		 * 
		 * @return String
		 */
		public String toLabelString() {
			return String.valueOf(this.label);
		}

		@Override
		public String getEnumName() {
			return this.getClass().getName();
		}
		
	}
	
	public enum MailFlag implements IEnum{
		AAREA("A区",1),
		BAREA("B区",2),
		MAREA("中间区",3),
		RAREA("抢点退款",4);

		/** 值 */
		private String label;

		/** 键 */
		private Integer code;
		
		private MailFlag(String label, Integer code){
			this.label = label;
			this.code = code;
		}
		
		public static String getEnumLabel(Integer code) {
			for (MailFlag c : MailFlag.values()) {
				if (code == c.getCode()) {
					return c.label;
				}
			}
			return null;
		}

		/**
		 * 根据值取得第一个匹配的键
		 * 
		 * @param label
		 *            String
		 * @return String
		 */
		public static Integer getEnumCode(String label) {
			for (MailFlag c : MailFlag.values()) {
				if (StringUtils.equals(c.getLabel(), label)) {
					return c.code;
				}
			}
			return null;
		}

		/**
		 * 取得下拉框列表
		 * 
		 * @return List
		 */
		public static List<DropDownDto> getList() {
			List<DropDownDto> resultList = new ArrayList<DropDownDto>();
			for (MailFlag c : MailFlag.values()) {
				DropDownDto dto = new DropDownDto();
				dto.setId(c.getCode());
				dto.setName(c.getLabel());
				resultList.add(dto);
			}
			return resultList;
		}

		/**
		 * get
		 * 
		 * @return String
		 */
		public String getLabel() {
			return label;
		}

		/**
		 * set
		 * 
		 * @return String
		 */
		public Integer getCode() {
			return code;
		}

		/**
		 * String转换，中间加横杠
		 * 
		 * @return String
		 */
		@Override
		public String toString() {
			return this.label;
		}

		/**
		 * 转换成value
		 * 
		 * @return String
		 */
		public String toValueString() {
			return String.valueOf(this.code);
		}

		/**
		 * 转换成label
		 * 
		 * @return String
		 */
		public String toLabelString() {
			return String.valueOf(this.label);
		}

		@Override
		public String getEnumName() {
			return this.getClass().getName();
		}
		
	}
	
	/**
	 * 提现管理表中打款状态
	 * 0.未发生 1.失败 2.成功
	 */
	public enum WithdrawPayStatus implements IEnum{
		/** 0.未发生 */
		UNHAPPEN("未发生",0),
		/** 1.失败  */
		FAILED("失败",1),
		/** 2.成功 */
		SUCCESSED("成功",2);

		/** 值 */
		private String label;

		/** 键 */
		private Integer code;
		
		private WithdrawPayStatus(String label, Integer code){
			this.label = label;
			this.code = code;
		}
		
		public static String getEnumLabel(Integer code) {
			for (WithdrawPayStatus c : WithdrawPayStatus.values()) {
				if (code == c.getCode()) {
					return c.label;
				}
			}
			return null;
		}

		/**
		 * 根据值取得第一个匹配的键
		 * 
		 * @param label
		 *            String
		 * @return String
		 */
		public static Integer getEnumCode(String label) {
			for (WithdrawPayStatus c : WithdrawPayStatus.values()) {
				if (StringUtils.equals(c.getLabel(), label)) {
					return c.code;
				}
			}
			return null;
		}

		/**
		 * 取得下拉框列表
		 * 
		 * @return List
		 */
		public static List<DropDownDto> getList() {
			List<DropDownDto> resultList = new ArrayList<DropDownDto>();
			for (WithdrawPayStatus c : WithdrawPayStatus.values()) {
				DropDownDto dto = new DropDownDto();
				dto.setId(c.getCode());
				dto.setName(c.getLabel());
				resultList.add(dto);
			}
			return resultList;
		}

		/**
		 * get
		 * 
		 * @return String
		 */
		public String getLabel() {
			return label;
		}

		/**
		 * set
		 * 
		 * @return String
		 */
		public Integer getCode() {
			return code;
		}

		/**
		 * String转换，中间加横杠
		 * 
		 * @return String
		 */
		@Override
		public String toString() {
			return this.label;
		}

		/**
		 * 转换成value
		 * 
		 * @return String
		 */
		public String toValueString() {
			return String.valueOf(this.code);
		}

		/**
		 * 转换成label
		 * 
		 * @return String
		 */
		public String toLabelString() {
			return String.valueOf(this.label);
		}

		@Override
		public String getEnumName() {
			return this.getClass().getName();
		}
		
	}
	
	/**
	 * 
	 */
	public enum payMoneyType implements IEnum{
		/** 0.失败  */
		NOPAY("未付完",1),
		/** 1.成功 */
		YESPAY("已付完",2);
		
		/** 值 */
		private String label;
		
		/** 键 */
		private Integer code;
		
		private payMoneyType(String label, Integer code){
			this.label = label;
			this.code = code;
		}
		
		public static String getEnumLabel(Integer code) {
			for (payMoneyType c : payMoneyType.values()) {
				if (code == c.getCode()) {
					return c.label;
				}
			}
			return null;
		}
		
		/**
		 * 根据值取得第一个匹配的键
		 * 
		 * @param label
		 *            String
		 * @return String
		 */
		public static Integer getEnumCode(String label) {
			for (payMoneyType c : payMoneyType.values()) {
				if (StringUtils.equals(c.getLabel(), label)) {
					return c.code;
				}
			}
			return null;
		}
		
		/**
		 * 取得下拉框列表
		 * 
		 * @return List
		 */
		public static List<DropDownDto> getList() {
			List<DropDownDto> resultList = new ArrayList<DropDownDto>();
			for (payMoneyType c : payMoneyType.values()) {
				DropDownDto dto = new DropDownDto();
				dto.setId(c.getCode());
				dto.setName(c.getLabel());
				resultList.add(dto);
			}
			return resultList;
		}
		
		/**
		 * get
		 * 
		 * @return String
		 */
		public String getLabel() {
			return label;
		}
		
		/**
		 * set
		 * 
		 * @return String
		 */
		public Integer getCode() {
			return code;
		}
		
		/**
		 * String转换，中间加横杠
		 * 
		 * @return String
		 */
		@Override
		public String toString() {
			return this.label;
		}
		
		/**
		 * 转换成value
		 * 
		 * @return String
		 */
		public String toValueString() {
			return String.valueOf(this.code);
		}
		
		/**
		 * 转换成label
		 * 
		 * @return String
		 */
		public String toLabelString() {
			return String.valueOf(this.label);
		}
		
		@Override
		public String getEnumName() {
			return this.getClass().getName();
		}
		
	}
	/**
	 * 支付回调表NOTIFY_RESULT 支付结果result
	 * 0：失败  1：成功
	 */
	public enum FailOrSucceed implements IEnum{
		/** 0.失败  */
		FAILED("失败",0),
		/** 1.成功 */
		SUCCESSED("成功",1);
		
		/** 值 */
		private String label;
		
		/** 键 */
		private Integer code;
		
		private FailOrSucceed(String label, Integer code){
			this.label = label;
			this.code = code;
		}
		
		public static String getEnumLabel(Integer code) {
			for (FailOrSucceed c : FailOrSucceed.values()) {
				if (code == c.getCode()) {
					return c.label;
				}
			}
			return null;
		}
		
		/**
		 * 根据值取得第一个匹配的键
		 * 
		 * @param label
		 *            String
		 * @return String
		 */
		public static Integer getEnumCode(String label) {
			for (FailOrSucceed c : FailOrSucceed.values()) {
				if (StringUtils.equals(c.getLabel(), label)) {
					return c.code;
				}
			}
			return null;
		}
		
		/**
		 * 取得下拉框列表
		 * 
		 * @return List
		 */
		public static List<DropDownDto> getList() {
			List<DropDownDto> resultList = new ArrayList<DropDownDto>();
			for (FailOrSucceed c : FailOrSucceed.values()) {
				DropDownDto dto = new DropDownDto();
				dto.setId(c.getCode());
				dto.setName(c.getLabel());
				resultList.add(dto);
			}
			return resultList;
		}
		
		/**
		 * get
		 * 
		 * @return String
		 */
		public String getLabel() {
			return label;
		}
		
		/**
		 * set
		 * 
		 * @return String
		 */
		public Integer getCode() {
			return code;
		}
		
		/**
		 * String转换，中间加横杠
		 * 
		 * @return String
		 */
		@Override
		public String toString() {
			return this.label;
		}
		
		/**
		 * 转换成value
		 * 
		 * @return String
		 */
		public String toValueString() {
			return String.valueOf(this.code);
		}
		
		/**
		 * 转换成label
		 * 
		 * @return String
		 */
		public String toLabelString() {
			return String.valueOf(this.label);
		}
		
		@Override
		public String getEnumName() {
			return this.getClass().getName();
		}
		
	}
	
	@Override
	public String getEnumLabel(String enumType, Integer enumKey) {
		return EnumSupport.getEnumLabel(enumType, enumKey, getClass());
	}

	@Override
	public Integer getEnumCode(String enumType, String enumLabel) {
		return EnumSupport.getEnumCode(enumType, enumLabel, getClass());
	}

	@Override
	public List<DropDownDto> getDropDownList(String enumType) {
		return EnumSupport.getCommonDropDownList(enumType, getClass());
	}

	@Override
	public String getSelList(String enumType, String name,Integer enumValue) {
		return EnumSupport.getSelList(enumType, name, enumValue, getClass());
	}
	
	
	
}
